#include "Kaart.h"

#include "Spel.h"
#include "Robot.h"

void Kaart::setEigenaar(SpelerContext * eigenaar)
{
	m_eigenaar = eigenaar;
}

bool Kaart::duwRobot(Robot* robot, const Rotatie& richting, Spel* spel)
{
	Positie pos = robot->getPositie();
	// REFACTORING: dit moet deel zijn van rotatie 
	switch( richting )
	{
	case LINKS: pos.x -= 1; break;
	case RECHTS: pos.x += 1; break;
	case ONDER: pos.y -= 1; break;
	case BOVEN: pos.y += 1; break;
	}

	Robot* bezetter = spel->getBezetter( pos.x, pos.y );
	const Vakje* vak = spel->getMap()->getVakje(pos.x, pos.y);
	if( bezetter == NULL)
	{
		if( vak == NULL )
			spel->destroy( robot );	// robot wordt van de kant geduwd
		else if( !vak->isObstakel() )
		{
			robot->setPositie( pos.x, pos.y );
			vak->pasSchadeAan( robot );
		}
		return true;
	}
	else if( duwRobot(bezetter, richting, spel) )
	{
		robot->setPositie( pos.x, pos.y );
		vak->pasSchadeAan( robot );
		return true;
	}
	else
		return false;
}
